export function createPagination(fetchData) {
  return {
    data() {
      return {
        dataList: [], // 数据列表
        page: 1, // 当前页码
        pageSize: 10, // 每页条数
        loading: false, // 是否正在加载
        noMore: false, // 是否没有更多数据
      };
    },
    methods: {
      // 加载数据
      async loadData(clear = false) {
        if (this.noMore || this.loading) return; // 防止重复加载

        this.loading = true; // 开始加载

        try {
          const res = await fetchData({
            page: clear ? 1 : this.page,
            pageSize: this.pageSize,
          });

          if (res.data.length > 0) {
            this.dataList = clear ? res.data : [...this.dataList, ...res.data]; // 追加数据
            this.page++; // 页码增加
          } else {
            this.noMore = true; // 没有更多数据
            if (clear) {
              this.dataList = []; // 如果第一页没有数据，清空列表
            }
          }
        } catch (error) {
          console.error('加载数据失败:', error);
        } finally {
          this.loading = false; // 结束加载
        }
      },

      // 重置分页
      resetPagination() {
        this.page = 1;
        this.noMore = false;
        this.dataList = [];
      },
    },
  };
}